(0) Obligation:

The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^2).


The TRS R consists of the following rules:

if(true, x, y) → x
if(false, x, y) → y
eq(0, 0) → true
eq(0, s(x)) → false
eq(s(x), 0) → false
eq(s(x), s(y)) → eq(x, y)
app(nil, l) → l
app(cons(x, l1), l2) → cons(x, app(l1, l2))
app(app(l1, l2), l3) → app(l1, app(l2, l3))
mem(x, nil) → false
mem(x, cons(y, l)) → ifmem(eq(x, y), x, l)
ifmem(true, x, l) → true
ifmem(false, x, l) → mem(x, l)
inter(x, nil) → nil
inter(nil, x) → nil
inter(app(l1, l2), l3) → app(inter(l1, l3), inter(l2, l3))
inter(l1, app(l2, l3)) → app(inter(l1, l2), inter(l1, l3))
inter(cons(x, l1), l2) → ifinter(mem(x, l2), x, l1, l2)
inter(l1, cons(x, l2)) → ifinter(mem(x, l1), x, l2, l1)
ifinter(true, x, l1, l2) → cons(x, inter(l1, l2))
ifinter(false, x, l1, l2) → inter(l1, l2)

Rewrite Strategy: INNERMOST

(1) NestedDefinedSymbolProof (BOTH BOUNDS(ID, ID) transformation)

The following defined symbols can occur below the 0th argument of ifinter: ifmem, eq, mem
The following defined symbols can occur below the 0th argument of ifmem: eq

Hence, the left-hand sides of the following rules are not basic-reachable and can be removed:
app(app(l1, l2), l3) → app(l1, app(l2, l3))
inter(app(l1, l2), l3) → app(inter(l1, l3), inter(l2, l3))
inter(l1, app(l2, l3)) → app(inter(l1, l2), inter(l1, l3))

(2) Obligation:

The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^2).


The TRS R consists of the following rules:

inter(cons(x, l1), l2) → ifinter(mem(x, l2), x, l1, l2)
mem(x, cons(y, l)) → ifmem(eq(x, y), x, l)
eq(0, s(x)) → false
eq(s(x), 0) → false
eq(s(x), s(y)) → eq(x, y)
ifmem(false, x, l) → mem(x, l)
ifinter(true, x, l1, l2) → cons(x, inter(l1, l2))
mem(x, nil) → false
app(cons(x, l1), l2) → cons(x, app(l1, l2))
ifinter(false, x, l1, l2) → inter(l1, l2)
ifmem(true, x, l) → true
eq(0, 0) → true
inter(l1, cons(x, l2)) → ifinter(mem(x, l1), x, l2, l1)
app(nil, l) → l
inter(x, nil) → nil
inter(nil, x) → nil
if(true, x, y) → x
if(false, x, y) → y

Rewrite Strategy: INNERMOST

(3) TrsToWeightedTrsProof (BOTH BOUNDS(ID, ID) transformation)

Transformed TRS to weighted TRS

(4) Obligation:

The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^2).


The TRS R consists of the following rules:

inter(cons(x, l1), l2) → ifinter(mem(x, l2), x, l1, l2) [1]
mem(x, cons(y, l)) → ifmem(eq(x, y), x, l) [1]
eq(0, s(x)) → false [1]
eq(s(x), 0) → false [1]
eq(s(x), s(y)) → eq(x, y) [1]
ifmem(false, x, l) → mem(x, l) [1]
ifinter(true, x, l1, l2) → cons(x, inter(l1, l2)) [1]
mem(x, nil) → false [1]
app(cons(x, l1), l2) → cons(x, app(l1, l2)) [1]
ifinter(false, x, l1, l2) → inter(l1, l2) [1]
ifmem(true, x, l) → true [1]
eq(0, 0) → true [1]
inter(l1, cons(x, l2)) → ifinter(mem(x, l1), x, l2, l1) [1]
app(nil, l) → l [1]
inter(x, nil) → nil [1]
inter(nil, x) → nil [1]
if(true, x, y) → x [1]
if(false, x, y) → y [1]

Rewrite Strategy: INNERMOST

(5) TypeInferenceProof (BOTH BOUNDS(ID, ID) transformation)

Infered types.

(6) Obligation:

Runtime Complexity Weighted TRS with Types.
The TRS R consists of the following rules:

inter(cons(x, l1), l2) → ifinter(mem(x, l2), x, l1, l2) [1]
mem(x, cons(y, l)) → ifmem(eq(x, y), x, l) [1]
eq(0, s(x)) → false [1]
eq(s(x), 0) → false [1]
eq(s(x), s(y)) → eq(x, y) [1]
ifmem(false, x, l) → mem(x, l) [1]
ifinter(true, x, l1, l2) → cons(x, inter(l1, l2)) [1]
mem(x, nil) → false [1]
app(cons(x, l1), l2) → cons(x, app(l1, l2)) [1]
ifinter(false, x, l1, l2) → inter(l1, l2) [1]
ifmem(true, x, l) → true [1]
eq(0, 0) → true [1]
inter(l1, cons(x, l2)) → ifinter(mem(x, l1), x, l2, l1) [1]
app(nil, l) → l [1]
inter(x, nil) → nil [1]
inter(nil, x) → nil [1]
if(true, x, y) → x [1]
if(false, x, y) → y [1]

The TRS has the following type information:
inter :: cons:nil → cons:nil → cons:nil
cons :: 0:s → cons:nil → cons:nil
ifinter :: false:true → 0:s → cons:nil → cons:nil → cons:nil
mem :: 0:s → cons:nil → false:true
ifmem :: false:true → 0:s → cons:nil → false:true
eq :: 0:s → 0:s → false:true
0 :: 0:s
s :: 0:s → 0:s
false :: false:true
true :: false:true
nil :: cons:nil
app :: cons:nil → cons:nil → cons:nil
if :: false:true → if → if → if

Rewrite Strategy: INNERMOST

(7) CompletionProof (UPPER BOUND(ID) transformation)

The transformation into a RNTS is sound, since:

(a) The obligation is a constructor system where every type has a constant constructor,

(b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols:


inter
ifinter
app
if

(c) The following functions are completely defined:

mem
eq
ifmem

Due to the following rules being added:
none

And the following fresh constants:

const

(8) Obligation:

Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is:

Runtime Complexity Weighted TRS with Types.
The TRS R consists of the following rules:

inter(cons(x, l1), l2) → ifinter(mem(x, l2), x, l1, l2) [1]
mem(x, cons(y, l)) → ifmem(eq(x, y), x, l) [1]
eq(0, s(x)) → false [1]
eq(s(x), 0) → false [1]
eq(s(x), s(y)) → eq(x, y) [1]
ifmem(false, x, l) → mem(x, l) [1]
ifinter(true, x, l1, l2) → cons(x, inter(l1, l2)) [1]
mem(x, nil) → false [1]
app(cons(x, l1), l2) → cons(x, app(l1, l2)) [1]
ifinter(false, x, l1, l2) → inter(l1, l2) [1]
ifmem(true, x, l) → true [1]
eq(0, 0) → true [1]
inter(l1, cons(x, l2)) → ifinter(mem(x, l1), x, l2, l1) [1]
app(nil, l) → l [1]
inter(x, nil) → nil [1]
inter(nil, x) → nil [1]
if(true, x, y) → x [1]
if(false, x, y) → y [1]

The TRS has the following type information:
inter :: cons:nil → cons:nil → cons:nil
cons :: 0:s → cons:nil → cons:nil
ifinter :: false:true → 0:s → cons:nil → cons:nil → cons:nil
mem :: 0:s → cons:nil → false:true
ifmem :: false:true → 0:s → cons:nil → false:true
eq :: 0:s → 0:s → false:true
0 :: 0:s
s :: 0:s → 0:s
false :: false:true
true :: false:true
nil :: cons:nil
app :: cons:nil → cons:nil → cons:nil
if :: false:true → if → if → if
const :: if

Rewrite Strategy: INNERMOST

(9) NarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Narrowed the inner basic terms of all right-hand sides by a single narrowing step.

(10) Obligation:

Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is:

Runtime Complexity Weighted TRS with Types.
The TRS R consists of the following rules:

inter(cons(x, l1), cons(y', l')) → ifinter(ifmem(eq(x, y'), x, l'), x, l1, cons(y', l')) [2]
inter(cons(x, l1), nil) → ifinter(false, x, l1, nil) [2]
mem(0, cons(s(x'), l)) → ifmem(false, 0, l) [2]
mem(s(x''), cons(0, l)) → ifmem(false, s(x''), l) [2]
mem(s(x1), cons(s(y''), l)) → ifmem(eq(x1, y''), s(x1), l) [2]
mem(0, cons(0, l)) → ifmem(true, 0, l) [2]
eq(0, s(x)) → false [1]
eq(s(x), 0) → false [1]
eq(s(x), s(y)) → eq(x, y) [1]
ifmem(false, x, l) → mem(x, l) [1]
ifinter(true, x, l1, l2) → cons(x, inter(l1, l2)) [1]
mem(x, nil) → false [1]
app(cons(x, l1), l2) → cons(x, app(l1, l2)) [1]
ifinter(false, x, l1, l2) → inter(l1, l2) [1]
ifmem(true, x, l) → true [1]
eq(0, 0) → true [1]
inter(cons(y1, l''), cons(x, l2)) → ifinter(ifmem(eq(x, y1), x, l''), x, l2, cons(y1, l'')) [2]
inter(nil, cons(x, l2)) → ifinter(false, x, l2, nil) [2]
app(nil, l) → l [1]
inter(x, nil) → nil [1]
inter(nil, x) → nil [1]
if(true, x, y) → x [1]
if(false, x, y) → y [1]

The TRS has the following type information:
inter :: cons:nil → cons:nil → cons:nil
cons :: 0:s → cons:nil → cons:nil
ifinter :: false:true → 0:s → cons:nil → cons:nil → cons:nil
mem :: 0:s → cons:nil → false:true
ifmem :: false:true → 0:s → cons:nil → false:true
eq :: 0:s → 0:s → false:true
0 :: 0:s
s :: 0:s → 0:s
false :: false:true
true :: false:true
nil :: cons:nil
app :: cons:nil → cons:nil → cons:nil
if :: false:true → if → if → if
const :: if

Rewrite Strategy: INNERMOST

(11) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID) transformation)

Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction.
The constant constructors are abstracted as follows:

0 => 0
false => 0
true => 1
nil => 0
const => 0

(12) Obligation:

Complexity RNTS consisting of the following rules:

app(z, z') -{ 1 }→ l :|: z' = l, l >= 0, z = 0
app(z, z') -{ 1 }→ 1 + x + app(l1, l2) :|: x >= 0, z = 1 + x + l1, z' = l2, l1 >= 0, l2 >= 0
eq(z, z') -{ 1 }→ eq(x, y) :|: z' = 1 + y, x >= 0, y >= 0, z = 1 + x
eq(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
eq(z, z') -{ 1 }→ 0 :|: z' = 1 + x, x >= 0, z = 0
eq(z, z') -{ 1 }→ 0 :|: x >= 0, z = 1 + x, z' = 0
if(z, z', z'') -{ 1 }→ x :|: z' = x, z'' = y, z = 1, x >= 0, y >= 0
if(z, z', z'') -{ 1 }→ y :|: z' = x, z'' = y, x >= 0, y >= 0, z = 0
ifinter(z, z', z'', z1) -{ 1 }→ inter(l1, l2) :|: z' = x, x >= 0, z1 = l2, z'' = l1, l1 >= 0, z = 0, l2 >= 0
ifinter(z, z', z'', z1) -{ 1 }→ 1 + x + inter(l1, l2) :|: z' = x, z = 1, x >= 0, z1 = l2, z'' = l1, l1 >= 0, l2 >= 0
ifmem(z, z', z'') -{ 1 }→ mem(x, l) :|: z' = x, x >= 0, l >= 0, z = 0, z'' = l
ifmem(z, z', z'') -{ 1 }→ 1 :|: z' = x, z = 1, x >= 0, l >= 0, z'' = l
inter(z, z') -{ 2 }→ ifinter(ifmem(eq(x, y'), x, l'), x, l1, 1 + y' + l') :|: x >= 0, z = 1 + x + l1, l' >= 0, y' >= 0, z' = 1 + y' + l', l1 >= 0
inter(z, z') -{ 2 }→ ifinter(ifmem(eq(x, y1), x, l''), x, l2, 1 + y1 + l'') :|: y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l''
inter(z, z') -{ 2 }→ ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0
inter(z, z') -{ 2 }→ ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0
inter(z, z') -{ 1 }→ 0 :|: x >= 0, z = x, z' = 0
inter(z, z') -{ 1 }→ 0 :|: z' = x, x >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(eq(x1, y''), 1 + x1, l) :|: x1 >= 0, z' = 1 + (1 + y'') + l, z = 1 + x1, y'' >= 0, l >= 0
mem(z, z') -{ 2 }→ ifmem(1, 0, l) :|: l >= 0, z = 0, z' = 1 + 0 + l
mem(z, z') -{ 2 }→ ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 1 + x'', l) :|: z = 1 + x'', l >= 0, x'' >= 0, z' = 1 + 0 + l
mem(z, z') -{ 1 }→ 0 :|: x >= 0, z = x, z' = 0

(13) SimplificationProof (BOTH BOUNDS(ID, ID) transformation)

Simplified the RNTS by moving equalities from the constraints into the right-hand sides.

(14) Obligation:

Complexity RNTS consisting of the following rules:

app(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
app(z, z') -{ 1 }→ 1 + x + app(l1, z') :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0
eq(z, z') -{ 1 }→ eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
eq(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0
if(z, z', z'') -{ 1 }→ z' :|: z = 1, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
ifinter(z, z', z'', z1) -{ 1 }→ inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0
ifinter(z, z', z'', z1) -{ 1 }→ 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0
ifmem(z, z', z'') -{ 1 }→ mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0
ifmem(z, z', z'') -{ 1 }→ 1 :|: z = 1, z' >= 0, z'' >= 0
inter(z, z') -{ 2 }→ ifinter(ifmem(eq(x, y'), x, l'), x, l1, 1 + y' + l') :|: x >= 0, z = 1 + x + l1, l' >= 0, y' >= 0, z' = 1 + y' + l', l1 >= 0
inter(z, z') -{ 2 }→ ifinter(ifmem(eq(x, y1), x, l''), x, l2, 1 + y1 + l'') :|: y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l''
inter(z, z') -{ 2 }→ ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0
inter(z, z') -{ 2 }→ ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0
inter(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
inter(z, z') -{ 1 }→ 0 :|: z' >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(eq(z - 1, y''), 1 + (z - 1), l) :|: z - 1 >= 0, z' = 1 + (1 + y'') + l, y'' >= 0, l >= 0
mem(z, z') -{ 2 }→ ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0
mem(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0

(15) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID) transformation)

Found the following analysis order by SCC decomposition:

{ if }
{ app }
{ eq }
{ ifmem, mem }
{ inter, ifinter }

(16) Obligation:

Complexity RNTS consisting of the following rules:

app(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
app(z, z') -{ 1 }→ 1 + x + app(l1, z') :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0
eq(z, z') -{ 1 }→ eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
eq(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0
if(z, z', z'') -{ 1 }→ z' :|: z = 1, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
ifinter(z, z', z'', z1) -{ 1 }→ inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0
ifinter(z, z', z'', z1) -{ 1 }→ 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0
ifmem(z, z', z'') -{ 1 }→ mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0
ifmem(z, z', z'') -{ 1 }→ 1 :|: z = 1, z' >= 0, z'' >= 0
inter(z, z') -{ 2 }→ ifinter(ifmem(eq(x, y'), x, l'), x, l1, 1 + y' + l') :|: x >= 0, z = 1 + x + l1, l' >= 0, y' >= 0, z' = 1 + y' + l', l1 >= 0
inter(z, z') -{ 2 }→ ifinter(ifmem(eq(x, y1), x, l''), x, l2, 1 + y1 + l'') :|: y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l''
inter(z, z') -{ 2 }→ ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0
inter(z, z') -{ 2 }→ ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0
inter(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
inter(z, z') -{ 1 }→ 0 :|: z' >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(eq(z - 1, y''), 1 + (z - 1), l) :|: z - 1 >= 0, z' = 1 + (1 + y'') + l, y'' >= 0, l >= 0
mem(z, z') -{ 2 }→ ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0
mem(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0

Function symbols to be analyzed: {if}, {app}, {eq}, {ifmem,mem}, {inter,ifinter}

(17) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed SIZE bound using CoFloCo for: if
after applying outer abstraction to obtain an ITS,
resulting in: O(n1) with polynomial bound: z' + z''

(18) Obligation:

Complexity RNTS consisting of the following rules:

app(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
app(z, z') -{ 1 }→ 1 + x + app(l1, z') :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0
eq(z, z') -{ 1 }→ eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
eq(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0
if(z, z', z'') -{ 1 }→ z' :|: z = 1, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
ifinter(z, z', z'', z1) -{ 1 }→ inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0
ifinter(z, z', z'', z1) -{ 1 }→ 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0
ifmem(z, z', z'') -{ 1 }→ mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0
ifmem(z, z', z'') -{ 1 }→ 1 :|: z = 1, z' >= 0, z'' >= 0
inter(z, z') -{ 2 }→ ifinter(ifmem(eq(x, y'), x, l'), x, l1, 1 + y' + l') :|: x >= 0, z = 1 + x + l1, l' >= 0, y' >= 0, z' = 1 + y' + l', l1 >= 0
inter(z, z') -{ 2 }→ ifinter(ifmem(eq(x, y1), x, l''), x, l2, 1 + y1 + l'') :|: y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l''
inter(z, z') -{ 2 }→ ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0
inter(z, z') -{ 2 }→ ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0
inter(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
inter(z, z') -{ 1 }→ 0 :|: z' >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(eq(z - 1, y''), 1 + (z - 1), l) :|: z - 1 >= 0, z' = 1 + (1 + y'') + l, y'' >= 0, l >= 0
mem(z, z') -{ 2 }→ ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0
mem(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0

Function symbols to be analyzed: {if}, {app}, {eq}, {ifmem,mem}, {inter,ifinter}
Previous analysis results are:
if: runtime: ?, size: O(n1) [z' + z'']

(19) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed RUNTIME bound using CoFloCo for: if
after applying outer abstraction to obtain an ITS,
resulting in: O(1) with polynomial bound: 1

(20) Obligation:

Complexity RNTS consisting of the following rules:

app(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
app(z, z') -{ 1 }→ 1 + x + app(l1, z') :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0
eq(z, z') -{ 1 }→ eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
eq(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0
if(z, z', z'') -{ 1 }→ z' :|: z = 1, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
ifinter(z, z', z'', z1) -{ 1 }→ inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0
ifinter(z, z', z'', z1) -{ 1 }→ 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0
ifmem(z, z', z'') -{ 1 }→ mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0
ifmem(z, z', z'') -{ 1 }→ 1 :|: z = 1, z' >= 0, z'' >= 0
inter(z, z') -{ 2 }→ ifinter(ifmem(eq(x, y'), x, l'), x, l1, 1 + y' + l') :|: x >= 0, z = 1 + x + l1, l' >= 0, y' >= 0, z' = 1 + y' + l', l1 >= 0
inter(z, z') -{ 2 }→ ifinter(ifmem(eq(x, y1), x, l''), x, l2, 1 + y1 + l'') :|: y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l''
inter(z, z') -{ 2 }→ ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0
inter(z, z') -{ 2 }→ ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0
inter(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
inter(z, z') -{ 1 }→ 0 :|: z' >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(eq(z - 1, y''), 1 + (z - 1), l) :|: z - 1 >= 0, z' = 1 + (1 + y'') + l, y'' >= 0, l >= 0
mem(z, z') -{ 2 }→ ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0
mem(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0

Function symbols to be analyzed: {app}, {eq}, {ifmem,mem}, {inter,ifinter}
Previous analysis results are:
if: runtime: O(1) [1], size: O(n1) [z' + z'']

(21) ResultPropagationProof (UPPER BOUND(ID) transformation)

Applied inner abstraction using the recently inferred runtime/size bounds where possible.

(22) Obligation:

Complexity RNTS consisting of the following rules:

app(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
app(z, z') -{ 1 }→ 1 + x + app(l1, z') :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0
eq(z, z') -{ 1 }→ eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
eq(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0
if(z, z', z'') -{ 1 }→ z' :|: z = 1, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
ifinter(z, z', z'', z1) -{ 1 }→ inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0
ifinter(z, z', z'', z1) -{ 1 }→ 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0
ifmem(z, z', z'') -{ 1 }→ mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0
ifmem(z, z', z'') -{ 1 }→ 1 :|: z = 1, z' >= 0, z'' >= 0
inter(z, z') -{ 2 }→ ifinter(ifmem(eq(x, y'), x, l'), x, l1, 1 + y' + l') :|: x >= 0, z = 1 + x + l1, l' >= 0, y' >= 0, z' = 1 + y' + l', l1 >= 0
inter(z, z') -{ 2 }→ ifinter(ifmem(eq(x, y1), x, l''), x, l2, 1 + y1 + l'') :|: y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l''
inter(z, z') -{ 2 }→ ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0
inter(z, z') -{ 2 }→ ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0
inter(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
inter(z, z') -{ 1 }→ 0 :|: z' >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(eq(z - 1, y''), 1 + (z - 1), l) :|: z - 1 >= 0, z' = 1 + (1 + y'') + l, y'' >= 0, l >= 0
mem(z, z') -{ 2 }→ ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0
mem(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0

Function symbols to be analyzed: {app}, {eq}, {ifmem,mem}, {inter,ifinter}
Previous analysis results are:
if: runtime: O(1) [1], size: O(n1) [z' + z'']

(23) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed SIZE bound using CoFloCo for: app
after applying outer abstraction to obtain an ITS,
resulting in: O(n1) with polynomial bound: z + z'

(24) Obligation:

Complexity RNTS consisting of the following rules:

app(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
app(z, z') -{ 1 }→ 1 + x + app(l1, z') :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0
eq(z, z') -{ 1 }→ eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
eq(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0
if(z, z', z'') -{ 1 }→ z' :|: z = 1, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
ifinter(z, z', z'', z1) -{ 1 }→ inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0
ifinter(z, z', z'', z1) -{ 1 }→ 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0
ifmem(z, z', z'') -{ 1 }→ mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0
ifmem(z, z', z'') -{ 1 }→ 1 :|: z = 1, z' >= 0, z'' >= 0
inter(z, z') -{ 2 }→ ifinter(ifmem(eq(x, y'), x, l'), x, l1, 1 + y' + l') :|: x >= 0, z = 1 + x + l1, l' >= 0, y' >= 0, z' = 1 + y' + l', l1 >= 0
inter(z, z') -{ 2 }→ ifinter(ifmem(eq(x, y1), x, l''), x, l2, 1 + y1 + l'') :|: y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l''
inter(z, z') -{ 2 }→ ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0
inter(z, z') -{ 2 }→ ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0
inter(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
inter(z, z') -{ 1 }→ 0 :|: z' >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(eq(z - 1, y''), 1 + (z - 1), l) :|: z - 1 >= 0, z' = 1 + (1 + y'') + l, y'' >= 0, l >= 0
mem(z, z') -{ 2 }→ ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0
mem(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0

Function symbols to be analyzed: {app}, {eq}, {ifmem,mem}, {inter,ifinter}
Previous analysis results are:
if: runtime: O(1) [1], size: O(n1) [z' + z'']
app: runtime: ?, size: O(n1) [z + z']

(25) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed RUNTIME bound using CoFloCo for: app
after applying outer abstraction to obtain an ITS,
resulting in: O(n1) with polynomial bound: 1 + z

(26) Obligation:

Complexity RNTS consisting of the following rules:

app(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
app(z, z') -{ 1 }→ 1 + x + app(l1, z') :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0
eq(z, z') -{ 1 }→ eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
eq(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0
if(z, z', z'') -{ 1 }→ z' :|: z = 1, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
ifinter(z, z', z'', z1) -{ 1 }→ inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0
ifinter(z, z', z'', z1) -{ 1 }→ 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0
ifmem(z, z', z'') -{ 1 }→ mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0
ifmem(z, z', z'') -{ 1 }→ 1 :|: z = 1, z' >= 0, z'' >= 0
inter(z, z') -{ 2 }→ ifinter(ifmem(eq(x, y'), x, l'), x, l1, 1 + y' + l') :|: x >= 0, z = 1 + x + l1, l' >= 0, y' >= 0, z' = 1 + y' + l', l1 >= 0
inter(z, z') -{ 2 }→ ifinter(ifmem(eq(x, y1), x, l''), x, l2, 1 + y1 + l'') :|: y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l''
inter(z, z') -{ 2 }→ ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0
inter(z, z') -{ 2 }→ ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0
inter(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
inter(z, z') -{ 1 }→ 0 :|: z' >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(eq(z - 1, y''), 1 + (z - 1), l) :|: z - 1 >= 0, z' = 1 + (1 + y'') + l, y'' >= 0, l >= 0
mem(z, z') -{ 2 }→ ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0
mem(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0

Function symbols to be analyzed: {eq}, {ifmem,mem}, {inter,ifinter}
Previous analysis results are:
if: runtime: O(1) [1], size: O(n1) [z' + z'']
app: runtime: O(n1) [1 + z], size: O(n1) [z + z']

(27) ResultPropagationProof (UPPER BOUND(ID) transformation)

Applied inner abstraction using the recently inferred runtime/size bounds where possible.

(28) Obligation:

Complexity RNTS consisting of the following rules:

app(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
app(z, z') -{ 2 + l1 }→ 1 + x + s :|: s >= 0, s <= 1 * l1 + 1 * z', x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0
eq(z, z') -{ 1 }→ eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
eq(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0
if(z, z', z'') -{ 1 }→ z' :|: z = 1, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
ifinter(z, z', z'', z1) -{ 1 }→ inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0
ifinter(z, z', z'', z1) -{ 1 }→ 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0
ifmem(z, z', z'') -{ 1 }→ mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0
ifmem(z, z', z'') -{ 1 }→ 1 :|: z = 1, z' >= 0, z'' >= 0
inter(z, z') -{ 2 }→ ifinter(ifmem(eq(x, y'), x, l'), x, l1, 1 + y' + l') :|: x >= 0, z = 1 + x + l1, l' >= 0, y' >= 0, z' = 1 + y' + l', l1 >= 0
inter(z, z') -{ 2 }→ ifinter(ifmem(eq(x, y1), x, l''), x, l2, 1 + y1 + l'') :|: y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l''
inter(z, z') -{ 2 }→ ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0
inter(z, z') -{ 2 }→ ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0
inter(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
inter(z, z') -{ 1 }→ 0 :|: z' >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(eq(z - 1, y''), 1 + (z - 1), l) :|: z - 1 >= 0, z' = 1 + (1 + y'') + l, y'' >= 0, l >= 0
mem(z, z') -{ 2 }→ ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0
mem(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0

Function symbols to be analyzed: {eq}, {ifmem,mem}, {inter,ifinter}
Previous analysis results are:
if: runtime: O(1) [1], size: O(n1) [z' + z'']
app: runtime: O(n1) [1 + z], size: O(n1) [z + z']

(29) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed SIZE bound using CoFloCo for: eq
after applying outer abstraction to obtain an ITS,
resulting in: O(1) with polynomial bound: 1

(30) Obligation:

Complexity RNTS consisting of the following rules:

app(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
app(z, z') -{ 2 + l1 }→ 1 + x + s :|: s >= 0, s <= 1 * l1 + 1 * z', x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0
eq(z, z') -{ 1 }→ eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
eq(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0
if(z, z', z'') -{ 1 }→ z' :|: z = 1, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
ifinter(z, z', z'', z1) -{ 1 }→ inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0
ifinter(z, z', z'', z1) -{ 1 }→ 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0
ifmem(z, z', z'') -{ 1 }→ mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0
ifmem(z, z', z'') -{ 1 }→ 1 :|: z = 1, z' >= 0, z'' >= 0
inter(z, z') -{ 2 }→ ifinter(ifmem(eq(x, y'), x, l'), x, l1, 1 + y' + l') :|: x >= 0, z = 1 + x + l1, l' >= 0, y' >= 0, z' = 1 + y' + l', l1 >= 0
inter(z, z') -{ 2 }→ ifinter(ifmem(eq(x, y1), x, l''), x, l2, 1 + y1 + l'') :|: y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l''
inter(z, z') -{ 2 }→ ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0
inter(z, z') -{ 2 }→ ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0
inter(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
inter(z, z') -{ 1 }→ 0 :|: z' >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(eq(z - 1, y''), 1 + (z - 1), l) :|: z - 1 >= 0, z' = 1 + (1 + y'') + l, y'' >= 0, l >= 0
mem(z, z') -{ 2 }→ ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0
mem(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0

Function symbols to be analyzed: {eq}, {ifmem,mem}, {inter,ifinter}
Previous analysis results are:
if: runtime: O(1) [1], size: O(n1) [z' + z'']
app: runtime: O(n1) [1 + z], size: O(n1) [z + z']
eq: runtime: ?, size: O(1) [1]

(31) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed RUNTIME bound using PUBS for: eq
after applying outer abstraction to obtain an ITS,
resulting in: O(n1) with polynomial bound: 1 + z'

(32) Obligation:

Complexity RNTS consisting of the following rules:

app(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
app(z, z') -{ 2 + l1 }→ 1 + x + s :|: s >= 0, s <= 1 * l1 + 1 * z', x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0
eq(z, z') -{ 1 }→ eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
eq(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0
if(z, z', z'') -{ 1 }→ z' :|: z = 1, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
ifinter(z, z', z'', z1) -{ 1 }→ inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0
ifinter(z, z', z'', z1) -{ 1 }→ 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0
ifmem(z, z', z'') -{ 1 }→ mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0
ifmem(z, z', z'') -{ 1 }→ 1 :|: z = 1, z' >= 0, z'' >= 0
inter(z, z') -{ 2 }→ ifinter(ifmem(eq(x, y'), x, l'), x, l1, 1 + y' + l') :|: x >= 0, z = 1 + x + l1, l' >= 0, y' >= 0, z' = 1 + y' + l', l1 >= 0
inter(z, z') -{ 2 }→ ifinter(ifmem(eq(x, y1), x, l''), x, l2, 1 + y1 + l'') :|: y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l''
inter(z, z') -{ 2 }→ ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0
inter(z, z') -{ 2 }→ ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0
inter(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
inter(z, z') -{ 1 }→ 0 :|: z' >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(eq(z - 1, y''), 1 + (z - 1), l) :|: z - 1 >= 0, z' = 1 + (1 + y'') + l, y'' >= 0, l >= 0
mem(z, z') -{ 2 }→ ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0
mem(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0

Function symbols to be analyzed: {ifmem,mem}, {inter,ifinter}
Previous analysis results are:
if: runtime: O(1) [1], size: O(n1) [z' + z'']
app: runtime: O(n1) [1 + z], size: O(n1) [z + z']
eq: runtime: O(n1) [1 + z'], size: O(1) [1]

(33) ResultPropagationProof (UPPER BOUND(ID) transformation)

Applied inner abstraction using the recently inferred runtime/size bounds where possible.

(34) Obligation:

Complexity RNTS consisting of the following rules:

app(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
app(z, z') -{ 2 + l1 }→ 1 + x + s :|: s >= 0, s <= 1 * l1 + 1 * z', x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 1, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
eq(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0
if(z, z', z'') -{ 1 }→ z' :|: z = 1, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
ifinter(z, z', z'', z1) -{ 1 }→ inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0
ifinter(z, z', z'', z1) -{ 1 }→ 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0
ifmem(z, z', z'') -{ 1 }→ mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0
ifmem(z, z', z'') -{ 1 }→ 1 :|: z = 1, z' >= 0, z'' >= 0
inter(z, z') -{ 3 + y' }→ ifinter(ifmem(s', x, l'), x, l1, 1 + y' + l') :|: s' >= 0, s' <= 1, x >= 0, z = 1 + x + l1, l' >= 0, y' >= 0, z' = 1 + y' + l', l1 >= 0
inter(z, z') -{ 3 + y1 }→ ifinter(ifmem(s2, x, l''), x, l2, 1 + y1 + l'') :|: s2 >= 0, s2 <= 1, y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l''
inter(z, z') -{ 2 }→ ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0
inter(z, z') -{ 2 }→ ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0
inter(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
inter(z, z') -{ 1 }→ 0 :|: z' >= 0, z = 0
mem(z, z') -{ 3 + y'' }→ ifmem(s'', 1 + (z - 1), l) :|: s'' >= 0, s'' <= 1, z - 1 >= 0, z' = 1 + (1 + y'') + l, y'' >= 0, l >= 0
mem(z, z') -{ 2 }→ ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0
mem(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0

Function symbols to be analyzed: {ifmem,mem}, {inter,ifinter}
Previous analysis results are:
if: runtime: O(1) [1], size: O(n1) [z' + z'']
app: runtime: O(n1) [1 + z], size: O(n1) [z + z']
eq: runtime: O(n1) [1 + z'], size: O(1) [1]

(35) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed SIZE bound using CoFloCo for: ifmem
after applying outer abstraction to obtain an ITS,
resulting in: O(1) with polynomial bound: 1

Computed SIZE bound using CoFloCo for: mem
after applying outer abstraction to obtain an ITS,
resulting in: O(1) with polynomial bound: 1

(36) Obligation:

Complexity RNTS consisting of the following rules:

app(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
app(z, z') -{ 2 + l1 }→ 1 + x + s :|: s >= 0, s <= 1 * l1 + 1 * z', x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 1, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
eq(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0
if(z, z', z'') -{ 1 }→ z' :|: z = 1, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
ifinter(z, z', z'', z1) -{ 1 }→ inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0
ifinter(z, z', z'', z1) -{ 1 }→ 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0
ifmem(z, z', z'') -{ 1 }→ mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0
ifmem(z, z', z'') -{ 1 }→ 1 :|: z = 1, z' >= 0, z'' >= 0
inter(z, z') -{ 3 + y' }→ ifinter(ifmem(s', x, l'), x, l1, 1 + y' + l') :|: s' >= 0, s' <= 1, x >= 0, z = 1 + x + l1, l' >= 0, y' >= 0, z' = 1 + y' + l', l1 >= 0
inter(z, z') -{ 3 + y1 }→ ifinter(ifmem(s2, x, l''), x, l2, 1 + y1 + l'') :|: s2 >= 0, s2 <= 1, y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l''
inter(z, z') -{ 2 }→ ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0
inter(z, z') -{ 2 }→ ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0
inter(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
inter(z, z') -{ 1 }→ 0 :|: z' >= 0, z = 0
mem(z, z') -{ 3 + y'' }→ ifmem(s'', 1 + (z - 1), l) :|: s'' >= 0, s'' <= 1, z - 1 >= 0, z' = 1 + (1 + y'') + l, y'' >= 0, l >= 0
mem(z, z') -{ 2 }→ ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0
mem(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0

Function symbols to be analyzed: {ifmem,mem}, {inter,ifinter}
Previous analysis results are:
if: runtime: O(1) [1], size: O(n1) [z' + z'']
app: runtime: O(n1) [1 + z], size: O(n1) [z + z']
eq: runtime: O(n1) [1 + z'], size: O(1) [1]
ifmem: runtime: ?, size: O(1) [1]
mem: runtime: ?, size: O(1) [1]

(37) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed RUNTIME bound using CoFloCo for: ifmem
after applying outer abstraction to obtain an ITS,
resulting in: O(n1) with polynomial bound: 7 + 7·z''

Computed RUNTIME bound using CoFloCo for: mem
after applying outer abstraction to obtain an ITS,
resulting in: O(n1) with polynomial bound: 5 + 7·z'

(38) Obligation:

Complexity RNTS consisting of the following rules:

app(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
app(z, z') -{ 2 + l1 }→ 1 + x + s :|: s >= 0, s <= 1 * l1 + 1 * z', x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 1, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
eq(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0
if(z, z', z'') -{ 1 }→ z' :|: z = 1, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
ifinter(z, z', z'', z1) -{ 1 }→ inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0
ifinter(z, z', z'', z1) -{ 1 }→ 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0
ifmem(z, z', z'') -{ 1 }→ mem(z', z'') :|: z' >= 0, z'' >= 0, z = 0
ifmem(z, z', z'') -{ 1 }→ 1 :|: z = 1, z' >= 0, z'' >= 0
inter(z, z') -{ 3 + y' }→ ifinter(ifmem(s', x, l'), x, l1, 1 + y' + l') :|: s' >= 0, s' <= 1, x >= 0, z = 1 + x + l1, l' >= 0, y' >= 0, z' = 1 + y' + l', l1 >= 0
inter(z, z') -{ 3 + y1 }→ ifinter(ifmem(s2, x, l''), x, l2, 1 + y1 + l'') :|: s2 >= 0, s2 <= 1, y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l''
inter(z, z') -{ 2 }→ ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0
inter(z, z') -{ 2 }→ ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0
inter(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
inter(z, z') -{ 1 }→ 0 :|: z' >= 0, z = 0
mem(z, z') -{ 3 + y'' }→ ifmem(s'', 1 + (z - 1), l) :|: s'' >= 0, s'' <= 1, z - 1 >= 0, z' = 1 + (1 + y'') + l, y'' >= 0, l >= 0
mem(z, z') -{ 2 }→ ifmem(1, 0, z' - 1) :|: z' - 1 >= 0, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 0, l) :|: x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0
mem(z, z') -{ 2 }→ ifmem(0, 1 + (z - 1), z' - 1) :|: z' - 1 >= 0, z - 1 >= 0
mem(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0

Function symbols to be analyzed: {inter,ifinter}
Previous analysis results are:
if: runtime: O(1) [1], size: O(n1) [z' + z'']
app: runtime: O(n1) [1 + z], size: O(n1) [z + z']
eq: runtime: O(n1) [1 + z'], size: O(1) [1]
ifmem: runtime: O(n1) [7 + 7·z''], size: O(1) [1]
mem: runtime: O(n1) [5 + 7·z'], size: O(1) [1]

(39) ResultPropagationProof (UPPER BOUND(ID) transformation)

Applied inner abstraction using the recently inferred runtime/size bounds where possible.

(40) Obligation:

Complexity RNTS consisting of the following rules:

app(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
app(z, z') -{ 2 + l1 }→ 1 + x + s :|: s >= 0, s <= 1 * l1 + 1 * z', x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 1, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
eq(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0
if(z, z', z'') -{ 1 }→ z' :|: z = 1, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
ifinter(z, z', z'', z1) -{ 1 }→ inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0
ifinter(z, z', z'', z1) -{ 1 }→ 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0
ifmem(z, z', z'') -{ 6 + 7·z'' }→ s8 :|: s8 >= 0, s8 <= 1, z' >= 0, z'' >= 0, z = 0
ifmem(z, z', z'') -{ 1 }→ 1 :|: z = 1, z' >= 0, z'' >= 0
inter(z, z') -{ 10 + 7·l' + y' }→ ifinter(s3, x, l1, 1 + y' + l') :|: s3 >= 0, s3 <= 1, s' >= 0, s' <= 1, x >= 0, z = 1 + x + l1, l' >= 0, y' >= 0, z' = 1 + y' + l', l1 >= 0
inter(z, z') -{ 10 + 7·l'' + y1 }→ ifinter(s9, x, l2, 1 + y1 + l'') :|: s9 >= 0, s9 <= 1, s2 >= 0, s2 <= 1, y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l''
inter(z, z') -{ 2 }→ ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0
inter(z, z') -{ 2 }→ ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0
inter(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
inter(z, z') -{ 1 }→ 0 :|: z' >= 0, z = 0
mem(z, z') -{ 9 + 7·l }→ s4 :|: s4 >= 0, s4 <= 1, x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0
mem(z, z') -{ 2 + 7·z' }→ s5 :|: s5 >= 0, s5 <= 1, z' - 1 >= 0, z - 1 >= 0
mem(z, z') -{ 10 + 7·l + y'' }→ s6 :|: s6 >= 0, s6 <= 1, s'' >= 0, s'' <= 1, z - 1 >= 0, z' = 1 + (1 + y'') + l, y'' >= 0, l >= 0
mem(z, z') -{ 2 + 7·z' }→ s7 :|: s7 >= 0, s7 <= 1, z' - 1 >= 0, z = 0
mem(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0

Function symbols to be analyzed: {inter,ifinter}
Previous analysis results are:
if: runtime: O(1) [1], size: O(n1) [z' + z'']
app: runtime: O(n1) [1 + z], size: O(n1) [z + z']
eq: runtime: O(n1) [1 + z'], size: O(1) [1]
ifmem: runtime: O(n1) [7 + 7·z''], size: O(1) [1]
mem: runtime: O(n1) [5 + 7·z'], size: O(1) [1]

(41) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed SIZE bound using KoAT for: inter
after applying outer abstraction to obtain an ITS,
resulting in: O(n1) with polynomial bound: z + z'

Computed SIZE bound using CoFloCo for: ifinter
after applying outer abstraction to obtain an ITS,
resulting in: O(n1) with polynomial bound: 1 + z' + z'' + z1

(42) Obligation:

Complexity RNTS consisting of the following rules:

app(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
app(z, z') -{ 2 + l1 }→ 1 + x + s :|: s >= 0, s <= 1 * l1 + 1 * z', x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 1, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
eq(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0
if(z, z', z'') -{ 1 }→ z' :|: z = 1, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
ifinter(z, z', z'', z1) -{ 1 }→ inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0
ifinter(z, z', z'', z1) -{ 1 }→ 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0
ifmem(z, z', z'') -{ 6 + 7·z'' }→ s8 :|: s8 >= 0, s8 <= 1, z' >= 0, z'' >= 0, z = 0
ifmem(z, z', z'') -{ 1 }→ 1 :|: z = 1, z' >= 0, z'' >= 0
inter(z, z') -{ 10 + 7·l' + y' }→ ifinter(s3, x, l1, 1 + y' + l') :|: s3 >= 0, s3 <= 1, s' >= 0, s' <= 1, x >= 0, z = 1 + x + l1, l' >= 0, y' >= 0, z' = 1 + y' + l', l1 >= 0
inter(z, z') -{ 10 + 7·l'' + y1 }→ ifinter(s9, x, l2, 1 + y1 + l'') :|: s9 >= 0, s9 <= 1, s2 >= 0, s2 <= 1, y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l''
inter(z, z') -{ 2 }→ ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0
inter(z, z') -{ 2 }→ ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0
inter(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
inter(z, z') -{ 1 }→ 0 :|: z' >= 0, z = 0
mem(z, z') -{ 9 + 7·l }→ s4 :|: s4 >= 0, s4 <= 1, x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0
mem(z, z') -{ 2 + 7·z' }→ s5 :|: s5 >= 0, s5 <= 1, z' - 1 >= 0, z - 1 >= 0
mem(z, z') -{ 10 + 7·l + y'' }→ s6 :|: s6 >= 0, s6 <= 1, s'' >= 0, s'' <= 1, z - 1 >= 0, z' = 1 + (1 + y'') + l, y'' >= 0, l >= 0
mem(z, z') -{ 2 + 7·z' }→ s7 :|: s7 >= 0, s7 <= 1, z' - 1 >= 0, z = 0
mem(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0

Function symbols to be analyzed: {inter,ifinter}
Previous analysis results are:
if: runtime: O(1) [1], size: O(n1) [z' + z'']
app: runtime: O(n1) [1 + z], size: O(n1) [z + z']
eq: runtime: O(n1) [1 + z'], size: O(1) [1]
ifmem: runtime: O(n1) [7 + 7·z''], size: O(1) [1]
mem: runtime: O(n1) [5 + 7·z'], size: O(1) [1]
inter: runtime: ?, size: O(n1) [z + z']
ifinter: runtime: ?, size: O(n1) [1 + z' + z'' + z1]

(43) IntTrsBoundProof (UPPER BOUND(ID) transformation)


Computed RUNTIME bound using PUBS for: inter
after applying outer abstraction to obtain an ITS,
resulting in: O(n2) with polynomial bound: 1 + 27·z + 16·z·z' + 8·z2 + 27·z' + 8·z'2

Computed RUNTIME bound using PUBS for: ifinter
after applying outer abstraction to obtain an ITS,
resulting in: O(n2) with polynomial bound: 2 + 27·z'' + 16·z''·z1 + 8·z''2 + 27·z1 + 8·z12

(44) Obligation:

Complexity RNTS consisting of the following rules:

app(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
app(z, z') -{ 2 + l1 }→ 1 + x + s :|: s >= 0, s <= 1 * l1 + 1 * z', x >= 0, z = 1 + x + l1, l1 >= 0, z' >= 0
eq(z, z') -{ 1 + z' }→ s1 :|: s1 >= 0, s1 <= 1, z - 1 >= 0, z' - 1 >= 0
eq(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
eq(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0
eq(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0
if(z, z', z'') -{ 1 }→ z' :|: z = 1, z' >= 0, z'' >= 0
if(z, z', z'') -{ 1 }→ z'' :|: z' >= 0, z'' >= 0, z = 0
ifinter(z, z', z'', z1) -{ 1 }→ inter(z'', z1) :|: z' >= 0, z'' >= 0, z = 0, z1 >= 0
ifinter(z, z', z'', z1) -{ 1 }→ 1 + z' + inter(z'', z1) :|: z = 1, z' >= 0, z'' >= 0, z1 >= 0
ifmem(z, z', z'') -{ 6 + 7·z'' }→ s8 :|: s8 >= 0, s8 <= 1, z' >= 0, z'' >= 0, z = 0
ifmem(z, z', z'') -{ 1 }→ 1 :|: z = 1, z' >= 0, z'' >= 0
inter(z, z') -{ 10 + 7·l' + y' }→ ifinter(s3, x, l1, 1 + y' + l') :|: s3 >= 0, s3 <= 1, s' >= 0, s' <= 1, x >= 0, z = 1 + x + l1, l' >= 0, y' >= 0, z' = 1 + y' + l', l1 >= 0
inter(z, z') -{ 10 + 7·l'' + y1 }→ ifinter(s9, x, l2, 1 + y1 + l'') :|: s9 >= 0, s9 <= 1, s2 >= 0, s2 <= 1, y1 >= 0, l'' >= 0, x >= 0, z' = 1 + x + l2, l2 >= 0, z = 1 + y1 + l''
inter(z, z') -{ 2 }→ ifinter(0, x, l1, 0) :|: x >= 0, z = 1 + x + l1, l1 >= 0, z' = 0
inter(z, z') -{ 2 }→ ifinter(0, x, l2, 0) :|: x >= 0, z' = 1 + x + l2, z = 0, l2 >= 0
inter(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
inter(z, z') -{ 1 }→ 0 :|: z' >= 0, z = 0
mem(z, z') -{ 9 + 7·l }→ s4 :|: s4 >= 0, s4 <= 1, x' >= 0, l >= 0, z' = 1 + (1 + x') + l, z = 0
mem(z, z') -{ 2 + 7·z' }→ s5 :|: s5 >= 0, s5 <= 1, z' - 1 >= 0, z - 1 >= 0
mem(z, z') -{ 10 + 7·l + y'' }→ s6 :|: s6 >= 0, s6 <= 1, s'' >= 0, s'' <= 1, z - 1 >= 0, z' = 1 + (1 + y'') + l, y'' >= 0, l >= 0
mem(z, z') -{ 2 + 7·z' }→ s7 :|: s7 >= 0, s7 <= 1, z' - 1 >= 0, z = 0
mem(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0

Function symbols to be analyzed:
Previous analysis results are:
if: runtime: O(1) [1], size: O(n1) [z' + z'']
app: runtime: O(n1) [1 + z], size: O(n1) [z + z']
eq: runtime: O(n1) [1 + z'], size: O(1) [1]
ifmem: runtime: O(n1) [7 + 7·z''], size: O(1) [1]
mem: runtime: O(n1) [5 + 7·z'], size: O(1) [1]
inter: runtime: O(n2) [1 + 27·z + 16·z·z' + 8·z2 + 27·z' + 8·z'2], size: O(n1) [z + z']
ifinter: runtime: O(n2) [2 + 27·z'' + 16·z''·z1 + 8·z''2 + 27·z1 + 8·z12], size: O(n1) [1 + z' + z'' + z1]

(45) FinalProof (EQUIVALENT transformation)

Computed overall runtime complexity

(46) BOUNDS(1, n^2)